package com.ikas.ai.server.module.instance.model;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ikas.ai.server.config.handler.ListStringHandler;
import lombok.Data;
import lombok.experimental.FieldNameConstants;

import java.io.Serializable;
import java.sql.Timestamp;
import java.util.Date;
import java.util.List;

/**
 * 工况转换流程实例表
 *
 * @author hu.bowei
 * @email hu.bowei@ikasinfo.com
 * @date 2023-05-06 17:12:07
 */
@Data
@TableName(value = "t_work_flow_instance", autoResultMap = true)
@FieldNameConstants
public class WorkFlowInstance implements Serializable {
    private static final long serialVersionUID = 1L;


    /**
     * id，wf_instance_id
     */
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 机组id
     */
    private Long machineId;

    /**
     * 机组编号
     */
    private String machineNo;

    /**
     * 工况流程Id，关联t_work_condition_flow
     */
    private Long wfId;

    /**
     * 工况流程名称，比如：TB36、TB20
     */
    private String wfName;

    /**
     * 工况转换批次号
     */
    private String batch;
    /**
     * 当前工况
     */
    private String currWc;

    /**
     * 下一个工况
     */
    private String nextWc;
    /**
     * 工况启始时间
     */
    private Long startTime;

    private Timestamp startDate;
    private Timestamp endDate;

    /**
     * 工况流程测点时间-做唯一索引
     */
    private Long meteTime;

    /**
     * 工况结束时间
     */
    private Long endTime;

    /**
     * 运行时长,毫秒
     */
    private Long costTime;

    /**
     * 状态，0=进行中、1=稳态、2=完成、3=失败
     */
    private Integer state;

    /**
     * 变量编码
     */
    private String meteCode;

    /**
     * 所属关联工况id
     */
    private Long workId;

    /**
     * 变量中文名称
     */
    private String meteName;
    /**
     * 有效变量值，作为收到测点判断开始依据
     */
    private String validMeteValue;

    /**
     * 流程批次开始变量(多个)
     */
    @TableField(typeHandler = ListStringHandler.class)
    private List<String> startMete;

    /**
     * 流程批次结束变量(稳态测点)
     */
    @TableField(typeHandler = ListStringHandler.class)
    private List<String> endMete;

    /**
     * 变量值
     */
    private String meteValue;

    @TableField(value = "`desc`")
    private String desc;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 更新时间
     */
    private Date updateTime;

    /**
     * 创建人id
     */
    private Long creator;

}
